// var fs = require('fs') ;
// var path = require('path') ;// 路径上升到模块
// /**
//  * @func 找出指定目录下最大文件
//  * @param {string} dir 
//  * @param {function} cb 
//  */
// function findlarger(dir,cb){
//    fs.readdir(dir,(err,files)=> {
//        console.log(files);
//        if(err) {
//            return cb(err)
//        }
//        console.log(files);
//       // cb(null,files)
//       // 是文件还是目录
//       //fs.readFile(files[0])
//       var count = files.length;
//       var errored=false;// 是否出错
//       var stats=[];
//       files.forEach((file,index) => {
//           fs.stat(path.join(dir,file),(err,stat)=> {
//              if(errored) return;
//              if(err){
//                  error=true;
//                  return cb(err)
//              }
//              stats[index]=stat;
//              if(--count==0){
//                 //  .map 把一个数组 变成一个新的数组
//                  var largest=stats
//                  .filter((stat)=>stat.isFile() );
//                  let maxS=0;
//                  for(let fileStat of fileStats){
//                      if(fileStat.size>maxS){
//                          maxS=fileStat.size;
//                      }
//                  }
//                  cb(null,maxS);
//                  console.log(largest);
//              }
//           })
//         //console.log(path.join(dir,file))
//       })
//    })//异步
// }
// findlarger('/.text',(err,fileSize)=>{
//    if(err) {
//        return console.log(err)
//    }
//    console.log('lagest file war:',fileSize)
// })
var fs = require('fs');
var path = require('path'); // 路径上升到模块

/**
 * @func  找出指定目录下最大的文件
 * @param {string} dir 
 * @param {function} cb 
 */
function findLargest(dir, cb) {
    fs.readdir(dir, (err, files) => {
        // console.log(files);
        if (err) { 
            return cb(err);
        }
        console.log(files);
        // cb(null, files)
        // 是文件， 还是目录？
        // fs.readFile(files[0]) 
        var couter = files.length; // 数量
        var errored = false;   // 是否出错？ 
        var stats = []; // 
        files.forEach((file, index) =>  {
            // 得到相对于当前4.js 的对的目录
            fs.stat(path.join(dir, file), (err, stat) => {
                if (errored) return;
                if (err) {
                    errored = true;
                    return cb(err)
                }
                stats[index] = stat; // 所有文件信息  入数组了
                if (--couter  == 0) { // 最后一个
                    var fileStats = stats
                        // .map  把一个数组  变成一个新的数组  
                        .filter((stat)=> stat.isFile());
                    let maxFileSize = 0;
                    for (let fileStat of fileStats) {
                        if (fileStat.size > maxFileSize) {
                            maxFileSize = fileStat.size;
                        }
                    }
                    cb(null, maxFileSize);
                    // console.log(largest);
                }
            })
            // fs.stat(path.join(dir, file))
        }) 
    }) // 异步
}

findLargest('./text', (err, fileSize) => {
    if (err) {
        return console.error(err);
    }
    console.log('largest file war:', fileSize);
})
